#!/usr/bin/env python3
"""
数据库初始化脚本
用于创建数据库表结构
"""

import sys
import os

# 添加父目录到路径
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parent_dir)

def init_database():
    """初始化数据库"""
    try:
        from app import app, db
        from models import User, Todo, Agent, Note, Contact, Role
        from config import Config
        
        with app.app_context():
            print("=" * 60)
            print("Feng Admin - 数据库初始化")
            print("=" * 60)
            print()
            
            # 创建数据库表
            print("正在创建数据库表...")
            db.create_all()
            print("[OK] 数据库表创建成功！")
            print()
            
            # 初始化角色（当启用 RBAC 时）
            if getattr(Config, 'FEATURE_RBAC', False):
                print("检查并创建默认角色...")
                for role_name in ['user', 'admin']:
                    if not Role.query.filter_by(name=role_name).first():
                        db.session.add(Role(name=role_name, description=f"Default {role_name} role"))
                db.session.commit()

            # 显示统计信息
            print("数据库统计：")
            print(f"  - 用户数量: {User.query.count()}")
            print(f"  - 待办事项: {Todo.query.count()}")
            print(f"  - 智能体: {Agent.query.count()}")
            print(f"  - 笔记: {Note.query.count()}")
            print(f"  - 联系人: {Contact.query.count()}")
            print()
            
            if User.query.count() == 0:
                print("[INFO] 提示：数据库为空，你可以：")
                print("  1. 运行 'python migrate_data.py' 创建测试用户")
                print("  2. 启动应用并注册新用户")
            
            print()
            print("=" * 60)
            print("初始化完成！")
            print("=" * 60)
            
    except ImportError as e:
        print(f"[ERROR] 错误：无法导入模块 - {e}")
        print("请确保在虚拟环境中运行，并已安装所有依赖。")
        sys.exit(1)
    except Exception as e:
        print(f"[ERROR] 错误：{e}")
        sys.exit(1)

if __name__ == '__main__':
    init_database()

